package com.hollysys.usersync.feign;


import com.hollysys.usersync.entity.Response;
import com.hollysys.usersync.entity.platform.Organization;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import java.util.List;

/**
 * 实时、历史数查询接口
 *
 * @author Jeremy Yim
 * @date 2022-11-09
 */
@Validated
@Headers({"Content-Type: application/json", "Accept: application/json"})
public interface OrgServiceInvoker {

    /**
     * 获取组织列表
     *
     * @param token Token
     * @return 组织列表
     */
    @RequestLine("GET /api/organizations/all?parentCode=platform_organization")
    @Headers("Authorization: {token}")
    Response<List<Organization>> getOrgList(@Param("token") String token);

    /**
     * 根据组织code获取组织id
     *
     * @param code 组织code
     * @param token Token
     * @return 添加结果
     */
    @RequestLine("GET /api/organizations/pkids/{codes}")
    @Headers("Authorization: {token}")
    Response<List<String>> getOrgIdByCodes(@Param("codes") String code, @Param("token") String token);

    /**
     * 添加组织
     *
     * @param orgEntity 组织信息实体
     * @param token     Token
     * @return 添加结果
     */
    @RequestLine("POST /api/organizations")
    @Headers("Authorization: {token}")
    Response<String> addOrg(@Valid Organization orgEntity, @Param("token") String token);

    /**
     * 根据code修改组织
     *
     * @param orgEntity 组织信息实体
     * @param token     Token
     * @return 修改结果
     */
    @RequestLine("PUT /api/organizations/code")
    @Headers("Authorization: {token}")
    Response<String> updateOrg(@Valid Organization orgEntity, @Param("token") String token);

    /**
     * 删除组织
     *
     * @param orgId 组织ID
     * @param token Token
     * @return 删除结果
     */
    @RequestLine("DELETE /api/organizations/{orgId}")
    @Headers("Authorization: {token}")
    Response<String> deleteOrg(@Param("orgId") String orgId, @Param("token") String token);

}
